package com.fg.cloud.manager.service.factory;


import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.fg.cloud.common.PageUtils;
import com.fg.cloud.manager.entry.factory.FactoryUserEntity;
import com.fg.cloud.manager.entry.factory.vo.FactoryUserVo;
import com.fg.cloud.manager.entry.system.vo.RoleVo;
import com.fg.cloud.manager.service.BaseService;


/**
  * Description:厂商用户接口
  * @author shaoqiping
  * @date 2017年8月4日下午4:53:11
*/
public interface FactoryUserService extends BaseService {
	
	/**
	 * Description:厂商用户角色授权
	 * @param userId
	 * @param roleId
	 * @return
	 * @author dingjiang
	 * @date 2017年11月8日下午5:09:33
	 */
	boolean roleAutho(Long userId, Long roleId);

	
	/**
	  * Description:验证查询
	  * @return FactoryUserEntity
	  * @author shaoqiping
	  * @date 2017年8月11日下午5:37:10
	*/
	FactoryUserEntity findToCheck(Long id);
	
	/**
	  * Description:验证重复
	  * @param userName
	  * @param facId
	  * @return
	  * @author shaoqiping
	  * @date 2017年8月28日上午9:32:43
	*/
	FactoryUserVo selectUserByUserName(String userName,Long facId);
	
	FactoryUserVo selectUserByUserName(String userName,Long facId,Long id);
	
	/**
	  * Description:根据用户名获取对象
	  * @param userName
	  * @return FactoryUserVo
	  * @author shaoqiping
	  * @date 2017年8月4日下午4:53:37
	*/
	FactoryUserVo selectUserByUserName(String userName);
	
	/**
	  * Description:根据登录获取对象
	  * @param userName
	  * @param passWord
	  * @return FactoryUserVo
	  * @author shaoqiping
	  * @date 2017年8月4日下午4:54:09
	*/
	FactoryUserVo selectUserByLogin(String userName, String passWord);
	

	/**
	  * Description:动态新增
	  * @param factoryUser
	  * @return true 成功
	  * @author shaoqiping
	  * @date 2017年8月4日下午4:54:32
	*/
	boolean insertSelective(FactoryUserEntity factoryUser);
	

	/**
	  * Description:动态修改
	  * @param factoryUser
	  * @return true 成功
	  * @author shaoqiping
	  * @date 2017年8月4日下午4:54:56
	*/
	boolean updateByPrimaryKeySelective(FactoryUserEntity factoryUser);
	
	/**
	 * 批量删除，根据主键ID
	 * @param ids
	 * @return boolean true：成功
	 * @throws IOException 
	 */
	boolean deletes(Map<String,Object> map) throws IOException;
	
	boolean removes(Long[] ids);
	
	boolean resetPsd(Long[] ids);
	
	/**
	 * 分页查询，动态传参绑定
	 * @param pageinfo PageUtils
	 */
	void findList(PageUtils<FactoryUserVo> pageinfo);
	
	void selectPage(PageUtils<FactoryUserVo> pageinfo);
	
	/**
	 * 查询通用角色，facId=0 and facId = 厂商自定义
	 * @param facId 为空则不查厂商自定义项
	 * @return List
	 */
	List<RoleVo> findByFacId(Long userId, Long facId);
	
	/**
	 * 更新用户角色信息
	 * @param userId
	 * @param roleIds
	 * @return boolean true:成功
	 */
	boolean updateUserRoles(Long userId, String roleIds);

	
}
